package tec;
import java.lang.IllegalArgumentException;

public class TestJaugeNaturel {

	public void lancer()
	{
		int nbTest = 0;
		System.out.println("Test de JaugeNaturel :");		
		testDansIntervalle();
		System.out.print("."); nbTest++;
		testDeplacement();
		System.out.print("."); nbTest++;
		testInferieurIntervalle();
		System.out.print("."); nbTest++;
		testLimiteVigieMaxInferieurVigieMin();
		System.out.print("."); nbTest++;
		testMaxEgaleMin();
		System.out.print("."); nbTest++;
		testSuperieurIntervalle();
		System.out.print("."); nbTest++;	
		testExceptionCasLimites();
		System.out.print("."); nbTest++;
		
		System.out.println("OK (" + nbTest + ")");
	}
	private void jeVeuxVrai(boolean expr, String m) { 
		assert expr : "\nECHEC jeVeuxVrai <" + m + ">"; 
	} 
	private void jeVeuxFaux(boolean expr, String m) { 
		assert !expr : "\nECHEC jeVeuxFaux <" + m + ">"; 
	}
	void testDansIntervalle()
	{
	    JaugeNaturel testdi = null;
	    try{
		testdi = new JaugeNaturel(-345, 67899, 100);
	    } catch(IllegalArgumentException e) { }
	    finally{
		if(testdi == null)
		    testdi = new JaugeNaturel();
	    }


		jeVeuxFaux(testdi.estBleu(), "Intervalleb");
		jeVeuxVrai(testdi.estVert(), "Intervallev");
		jeVeuxFaux(testdi.estRouge(), "Intervaller");

	}
	
	void testDeplacement()
	{
	    JaugeNaturel testde = null;
	    try{
		testde = new JaugeNaturel(0, 4, 2);
	    } catch(IllegalArgumentException e) { }
	    finally{
		if(testde == null)
		    testde = new JaugeNaturel();
	    }

		testde.decrementer();
		testde.decrementer();
		testde.decrementer();
		jeVeuxVrai(testde.estBleu(), "Decrementb");
		jeVeuxFaux(testde.estVert(), "Decrementv");
		jeVeuxFaux(testde.estRouge(), "Decrementr");
		testde.incrementer();
		testde.incrementer();
		testde.incrementer();
		jeVeuxFaux(testde.estBleu(), "Incrementb");
		jeVeuxVrai(testde.estVert(), "Incrementv");
		jeVeuxFaux(testde.estRouge(), "Incrementr");

	}
	
	void testInferieurIntervalle()
	{
	    JaugeNaturel testii = null;
	    try{
			testii = new JaugeNaturel(0, 4, -1);
	    }
	    catch (IllegalArgumentException e) {
			e.printStackTrace();
		}
	    finally{
		if(testii == null)
		    testii = new JaugeNaturel();
	    }

	    JaugeNaturel testiei = null;
	    try{
		testiei = new JaugeNaturel(0, 4, 0);
	    } catch (IllegalArgumentException e) { }
	    finally{
		if(testiei == null)
		    testiei = new JaugeNaturel();
	    }
		
		
		jeVeuxVrai(testii.estBleu(), "Inferieur intervalleb");
		jeVeuxFaux(testii.estVert(), "Inferieur intervallev");
		jeVeuxFaux(testii.estRouge(), "Inferieur intervaller");
		jeVeuxVrai(testiei.estBleu(), "Inferieur/e intervalleb");
		jeVeuxFaux(testiei.estVert(), "Inferieur/e intervallev");
		jeVeuxFaux(testiei.estRouge(), "Inferieur/e intervaller");
	}
	
	void testLimiteVigieMaxInferieurVigieMin()
	{
	    JaugeNaturel testlimite = null;
	    try{
		testlimite = new JaugeNaturel(3, 1, 2);
	    } catch (IllegalArgumentException e) { }
	    finally{
		if(testlimite == null)
		    testlimite = new JaugeNaturel();
	    }
	}
	
	void testMaxEgaleMin()
	{
	    JaugeNaturel testmax = null;
	    try {
		testmax = new JaugeNaturel(1, 1, 2);
	    } catch (IllegalArgumentException e) { }
	    finally{
		if(testmax == null)
		    testmax = new JaugeNaturel();
	    }

	    JaugeNaturel testmaxe = null;
	    try {
		testmaxe = new JaugeNaturel(1, 1, 1);
	    } catch (IllegalArgumentException e) { }
	    finally{
		if(testmaxe == null)
		    testmaxe = new JaugeNaturel();
	    }

		/*
		assert(jauge.getMIN() == jauge.getMAX() && jauge.getMAX() < jauge.getValeur() );
		jauge.decrementer();
		assert(jauge.getMIN() == jauge.getMAX() && jauge.getMAX() == jauge.getValeur() );
		*/
	}
	
	void testSuperieurIntervalle()
	{
	    JaugeNaturel testsup = null;
	    try{
		testsup = new JaugeNaturel(1, 5, 7);
	    } catch (IllegalArgumentException e) { }
	    finally{
		if(testsup == null)
		    testsup = new JaugeNaturel();
	    }

	    JaugeNaturel testsupe = null;
	    try{
		testsupe = new JaugeNaturel(1, 8, 8);
	    } catch (IllegalArgumentException e) { }
	    finally{
		if(testsupe == null)
		    testsupe = new JaugeNaturel();
	    }
		
		jeVeuxFaux(testsup.estBleu(), "Superieur intervalleb");
		jeVeuxFaux(testsup.estVert(), "Superieur intervallev");
		jeVeuxVrai(testsup.estRouge(), "Superieur intervaller");
		
		jeVeuxFaux(testsupe.estBleu(), "Superieur/e intervalleb");
		jeVeuxFaux(testsupe.estVert(), "Superieur/e intervallev");
		jeVeuxVrai(testsupe.estRouge(), "Superieur/e intervaller");
	}
    public void testExceptionCasLimites() {

	JaugeNaturel inverse = null;
	try{
	    inverse = new JaugeNaturel(78, 13, 55);
	} catch (IllegalArgumentException e) {
		 assert inverse == null : "l'exception n'a pas ete levee";
		 }
	finally{

	}
	

	JaugeNaturel egale = null;
	try{
	    egale = new JaugeNaturel(-42, -42, 55);
	} catch (IllegalArgumentException e) { }
	finally{
	    assert egale == null : "l'exception n'a pas ete levee";
	}

    }

}
